package com.cn.wanxi.servlet;

import com.cn.wanxi.model.CompanyModel;
//import com.cn.wanxi.model.NavModel;
//import com.cn.wanxi.model.NewsModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.service.ICompanyService;
import com.cn.wanxi.service.INavService;
import com.cn.wanxi.service.impl.CompanyServiceImpl;
import com.cn.wanxi.service.impl.NavServiceImpl;
//import com.cn.wanxi.service.impl.HomeServiceImpl;
//import com.cn.wanxi.service.impl.NavServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 页面控制层
 * 熟悉servlet的生命周期
 * servlet重定向和转发的区别
 * jsp四大作用域，jsp就打内置对象
 */
@WebServlet(value = "/home")
public class HomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/**
 * 1.页面请求后台页面控制层
 * 2.页面控制层去服务逻辑层调用
 * 3.服务逻辑层封装数据（实体层model）
 */
//        HomeService homeService = new HomeService();
//        IHomeService iHomeService=new HomeServiceImpl();
//        CompanyModel compnayModel = iHomeService.getCompanyModelFromIo();//从服务逻辑层拿到数据
        ICompanyService iCompanyService=new CompanyServiceImpl();
        CompanyModel companyModel=iCompanyService.getCompanyModel();
        req.setAttribute("companyModel", companyModel);//将数据保存到request作用域里面


        /**
         * 导航式一个大的对象，里面有六个小的对象
         * 对象属性：名字，连接
         * 需要一个集合来封装对象
         */
        INavService iNavService=new NavServiceImpl();
        List<NavModel> navModelList = iNavService.getNavModelList();
        req.setAttribute("navModelList", navModelList);
//
//        NewsService newsService=new NewsService();
//        List<NewsModel> newsModelList=newsService.getNewsModelList();
//        req.setAttribute("newsModelList", newsModelList);
        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);//页面转发
//        resp.sendRedirect("/jsp/home.jsp");//重定向
    }
    /**
     * 1.面向对象
     * 2.数据类型
     * 3.一个类的组成部分
     * 4.基本类型
     * 5.数据的流向  页面的数据和后台的数据
     * 6.前台访问后台   通过注解的
     * 7.servlet
     *  1.连接数据逻辑层
     *  2.取得返回值
     *  3.将数据存储到作用域 request
     *  4.将数据转发到页面
     */
    /**
     * jsp的九大内置对象
     * request 请求对象 response 响应对象 session 会话对象 application 应用对象
     * page  页面对象 pageContext 上下文对象 out  输出对象 exception 异常对象
     * config  配置对象
     * 隐式对象：我们不需要实例化，直接引用
     * 作用域对象：
     * request  请求req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);//页面转发
     * session  会话  当前浏览器
     * application  整个应用程序，跨浏览器
     * page  当前页面，不能跨页面
     *
     */
/**
 * 对象里面的属性，不要直接用public
 *
 */
/**
 * redis 注意问题
 * 1.下载Jedis的jar包
 * 2.redis的数据类型  五种，3中，String  list  set
 * 3.命令：增删改查
 * 4.是否存在，长度，过期时间，删除数据库
 * 5.面试中问道问题？请说一下你自己做的项目里面为什么要用redis？
 */
}
